/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEditorial;
import GUI.Bibliotecario.AdminEditoriales.PanelRegistrarEditorial;
import LogicaNegocio.Biblioteca.Editorial;
import LogicaNegocio.Validacion.VBiblioteca;
import javax.persistence.EntityExistsException;
import javax.persistence.RollbackException;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos
 * para el registro de editoriales en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlRegistrarEditorial.java
 * @version 1.0
 * Fecha: mar may 11 10:36:38 COT 2010
 */



public class ControlRegistrarEditorial {

    //Atributos de clase
    private PanelRegistrarEditorial panelRegistrar;
    private ManagerEditorial gestorEditorial;
    private Editorial editorial;


    public ControlRegistrarEditorial(PanelRegistrarEditorial panelRegistrar) {
        this.panelRegistrar = panelRegistrar;
        gestorEditorial = new ManagerEditorial();
        registrar();
    }

    private void registrar() {
        try {
            //crea la editorial
            editorial = new Editorial();
            editorial.setCodigoEditorial(Integer.parseInt(panelRegistrar.textFieldCodigo.getText()));
            editorial.setNombre(panelRegistrar.textFieldNombre.getText());
            editorial.setPaginaWeb(panelRegistrar.textFieldPagina.getText());
            editorial.setPais(panelRegistrar.textFieldPais.getText());
            //valida los datos
            new VBiblioteca(editorial);
            //si los datos son correctos
            gestorEditorial.crearEditorial(editorial);
            //si no ocurren excepciones
            limpiar();
            //informa
            JOptionPane.showMessageDialog(panelRegistrar, "La nueva editorial ha sido registrada con exito", "Registrar", JOptionPane.INFORMATION_MESSAGE);
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "El campo de codigo editorial solo debe contener datos numericos", "Error Codigo", JOptionPane.ERROR_MESSAGE);
            panelRegistrar.textFieldCodigo.setText("");
        } catch (EntityExistsException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "Ya existe una editorial con codigo "+editorial.getCodigoEditorial(), "Error Codigo", JOptionPane.INFORMATION_MESSAGE);
        } catch (RollbackException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "Ya existe una editorial con codigo "+editorial.getCodigoEditorial(), "Error Codigo", JOptionPane.INFORMATION_MESSAGE);
        } catch (VBiblioteca ex) {
            JOptionPane.showMessageDialog(panelRegistrar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private void limpiar() {
        panelRegistrar.textFieldCodigo.setText("");
        panelRegistrar.textFieldNombre.setText("");
        panelRegistrar.textFieldPagina.setText("");
        panelRegistrar.textFieldPais.setText("");
    }
}
